package com.it.base.arithmetic.base.dm.strategy;

import com.it.base.arithmetic.base.dm.strategy.strategy.AliPayStrategy;
import com.it.base.arithmetic.base.dm.strategy.strategy.WXPayStrategy;
import com.it.base.arithmetic.base.dm.strategy.strategy.YLPayStrategy;

import java.util.HashMap;
import java.util.Map;

/**
 * 定义策略上下文，提供对外的访问，
 * key初始化此类的时候，通过某种方式直接把所有策略注入到strategyMap 中
 */
public class StrategyContext {
    // key为策略名称，
   private Map<String,Strategy> strategyMap = new HashMap<>();

    /**
     * 此初始化所有策略
     */
    public StrategyContext(){
        // 支付宝
        Strategy aliPayStrategy = new  AliPayStrategy();
        strategyMap.put("ali",aliPayStrategy);
        // 支付宝
        Strategy wxPayStrategy = new WXPayStrategy();
        strategyMap.put("wx",wxPayStrategy);
        // 支付宝
        Strategy ylPayStrategy = new YLPayStrategy();
        strategyMap.put("yl",ylPayStrategy);
    }

    /**
     * 对外提供一个方法，传入参数和一种策略算法
     * @param parms
     * @param type
     * @return
     */
    public boolean isAliPay(Map<String,Object> parms ,String type){
       return strategyMap.get(type).payOrder(parms);

    }
}
